#ifndef _TYPES_H
#define _TYPES_H

#ifdef WIN32
#include <windows.h>

#define RTS_PACK

#else  // LINUX

typedef unsigned long       DWORD;
typedef long                LONG;
typedef int                 BOOL;
typedef int                 INT;
typedef unsigned char       BYTE;
typedef unsigned short      WORD;

#define TRUE  1
#define FALSE 0

typedef void VOID;

#define DECLARE_HANDLE(name) typedef int name
typedef int HANDLE;
#define INVALID_HANDLE_VALUE (-1)

typedef DWORD *LPDWORD;
typedef LONG  *PLONG;
typedef const void *LPCVOID;
typedef void * PVOID, * LPVOID;
typedef char CHAR;
typedef char *LPSTR, *PSTR;
typedef const CHAR *LPCSTR, *PCSTR;

#define FILE_ATTRIBUTE_READONLY             0x00000001  
#define FILE_ATTRIBUTE_HIDDEN               0x00000002  
#define FILE_ATTRIBUTE_SYSTEM               0x00000004  
#define FILE_ATTRIBUTE_DIRECTORY            0x00000010  
#define FILE_ATTRIBUTE_ARCHIVE              0x00000020  
#define FILE_ATTRIBUTE_ENCRYPTED            0x00000040  
#define FILE_ATTRIBUTE_NORMAL               0x00000080  
#define FILE_ATTRIBUTE_TEMPORARY            0x00000100  
#define FILE_ATTRIBUTE_SPARSE_FILE          0x00000200  
#define FILE_ATTRIBUTE_REPARSE_POINT        0x00000400  
#define FILE_ATTRIBUTE_COMPRESSED           0x00000800  
#define FILE_ATTRIBUTE_OFFLINE              0x00001000  
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000  

#define RTS_PACK __attribute__ ((packed))

#endif

#endif // _TYPES_H

